News All Tests
Current file: /home/estudydev/workspace/MSP09/web/news/tests/class.xpwebinfo.inc.php
Legend: executed not executed dead code

  Coverage
  Classes Methods Lines
Total
100.00 %100.00%
100.00% 1 / 1
0.00 %0.00%
0.00% 0 / 12
6.95 %6.95%
6.95% 13 / 187
 
XPWebInfo
100.00 %100.00%
100.00% 1 / 1
0.00 %0.00%
0.00% 0 / 12
0.57 %0.57%
0.57% 1 / 175
 public function XPWebInfo($id, $image = NULL)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 10
 public function checkForUser()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 7
 public function insertNewUser()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 14
 public function getXPWebDefaultProvile($usergroup)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 29
 public function updateLogin($oldLogin, $newLogin, $password)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 14
 public function showOptionsDialog($hiddenVars)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 5
 public function optionsHandler($event)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 11
 public function checkPostVars()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 19
 public function echoDialog($hiddenVars)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 40
 public function createProject($projectName)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 10
 public function assignToProject($projectID)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 13
 public function createXPWebUsername()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 2


       1                 : <?php                                                                                                                                                                                                                                                                                        
       2                 : /*--------------------------------------------------------------------------+                                                                                                                                                                                                                
       3                 : This file is part of eStudy                                                                                                                                                                                                                                                                  
       4                 : externaltools/classes/class.xpwebinfo.inc.php                                                                                                                                                                                                                                                
       5                 : - Modulgruppe:  ExternalTools                                                                                                                                                                                                                                                                
       6                 : - Beschreibung: In dieser Datei ist die Klasse XPWebInfo implementiert.                                                                                                                                                                                                                      
       7                 : - Version:      1.0 13/10/05                                                                                                                                                                                                                                                                 
       8                 : - Autor(en):    Christian Gerhardt <case42@gmx.net>                                                                                                                                                                                                                                          
       9                 : +---------------------------------------------------------------------------+                                                                                                                                                                                                                
      10                 : This program is free software; you can redistribute it and/or                                                                                                                                                                                                                                
      11                 : modify it under the terms of the GNU General Public License                                                                                                                                                                                                                                  
      12                 : as published by the Free Software Foundation; either version 2                                                                                                                                                                                                                               
      13                 : of the License, or any later version.                                                                                                                                                                                                                                                        
      14                 : +---------------------------------------------------------------------------+                                                                                                                                                                                                                
      15                 : This program is distributed in the hope that it will be useful,                                                                                                                                                                                                                              
      16                 : but WITHOUT ANY WARRANTY; without even the implied warranty of                                                                                                                                                                                                                               
      17                 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                                                                                                                                                                                                                
      18                 : GNU General Public License for more details.                                                                                                                                                                                                                                                 
      19                 : You should have received a copy of the GNU General Public License                                                                                                                                                                                                                            
      20                 : along with this program; if not, write to the Free Software                                                                                                                                                                                                                                  
      21                 : Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.                                                                                                                                                                                                                  
      22                 : +--------------------------------------------------------------------------*/                                                                                                                                                                                                                
      23                 : /**                                                                                                                                                                                                                                                                                          
      24                 :  * In dieser Datei ist die Klasse XPWebInfo implementiert.                                                                                                                                                                                                                                   
      25                 :  * @package eStudy.ExternalTools                                                                                                                                                                                                                                                             
      26                 :  * @version 1.0, 13/10/05                                                                                                                                                                                                                                                                    
      27                 :  * @author Christian Gerhardt <case42@gmx.net>                                                                                                                                                                                                                                               
      28                 :  */                                                                                                                                                                                                                                                                                          
      29                 :                                                                                                                                                                                                                                                                                              
      30               1 : if (!defined('PATH_TO_ROOT'))                                                                                                                                                                                                                                                                
      31               1 :     define("PATH_TO_ROOT", "../../");                                                                                                                                                                                                                                                        
      32                 :                                                                                                                                                                                                                                                                                              
      33                 : /**Die Basisklasse*/                                                                                                                                                                                                                                                                         
      34               1 : require_once ("class.toolinfo.inc.php");                                                                                                                                                                                                                                                     
      35                 : //für Passwort-behandlung                                                                                                                                                                                                                                                                   
      36               1 : require_once ("class.passwords.inc.php");                                                                                                                                                                                                                                                    
      37                 : /**                                                                                                                                                                                                                                                                                          
      38                 :  * Erster Teil der XPWeb-Benutzerverwaltung.                                                                                                                                                                                                                                                 
      39                 :  * Zuordnung zwischen dem (externen)Benutzernamen und dem                                                                                                                                                                                                                                    
      40                 :  * (internen)XPWeb-Benutzernamen.                                                                                                                                                                                                                                                            
      41                 :  */                                                                                                                                                                                                                                                                                          
      42               1 : define("XPWEB_MEMBERS_TABLE", "team_members");                                                                                                                                                                                                                                               
      43                 : /**                                                                                                                                                                                                                                                                                          
      44                 :  * Zweiter Teil der XPWeb-Benutzerverwaltung.                                                                                                                                                                                                                                                
      45                 :  * Zusätzliche Benutzerinformationen, wie z.B. der Emailadresse.                                                                                                                                                                                                                            
      46                 :  */                                                                                                                                                                                                                                                                                          
      47               1 : define("XPWEB_USERS_TABLE", "tbl_users");                                                                                                                                                                                                                                                    
      48                 : /**                                                                                                                                                                                                                                                                                          
      49                 :  * Die Tabelle in der XPWeb seine Projekte verwaltet.                                                                                                                                                                                                                                        
      50                 :  */                                                                                                                                                                                                                                                                                          
      51               1 : define("XPWEB_PROJECTS_TABLE", "projects");                                                                                                                                                                                                                                                  
      52                 : /**                                                                                                                                                                                                                                                                                          
      53                 :  * Die Tabelle in der XPWeb die Projektzugehörigkeiten seiner Benutzer speichert.                                                                                                                                                                                                           
      54                 :  */                                                                                                                                                                                                                                                                                          
      55               1 : define("XPWEB_PROJECTS_AFFECTATION_TABLE", "projects_affectation");                                                                                                                                                                                                                          
      56                 : /**                                                                                                                                                                                                                                                                                          
      57                 :  * Die Tabelle in der XPWeb seine Benutzerprofile verwaltet.                                                                                                                                                                                                                                 
      58                 :  */                                                                                                                                                                                                                                                                                          
      59               1 : define("XPWEB_PROFILE_TABLE", "user_profiles");                                                                                                                                                                                                                                              
      60                 : /**                                                                                                                                                                                                                                                                                          
      61                 :  * Standard XPWeb-Profil von Studenten.                                                                                                                                                                                                                                                      
      62                 :  */                                                                                                                                                                                                                                                                                          
      63               1 : define("XPWEB_DEFAULT_PROFILE", 3); //Developer                                                                                                                                                                                                                                              
      64                 :                                                                                                                                                                                                                                                                                              
      65                 : /**                                                                                                                                                                                                                                                                                          
      66                 :  * Standard XPWeb-Profil von Dozenten.                                                                                                                                                                                                                                                       
      67                 :  */                                                                                                                                                                                                                                                                                          
      68               1 : define("XPWEB_ADMINISTRATOR_PROFILE", 2); //Admin                                                                                                                                                                                                                                            
      69                 :                                                                                                                                                                                                                                                                                              
      70                 : /**                                                                                                                                                                                                                                                                                          
      71                 :  * Standard Beschreibung von XPWeb-Benutzern die von eStudy angelegt wurden.                                                                                                                                                                                                                 
      72                 :  */                                                                                                                                                                                                                                                                                          
      73               1 : define("XPWEB_DEFAULT_DESCRIPTION", "eStudy created this user.");                                                                                                                                                                                                                            
      74                 : /**                                                                                                                                                                                                                                                                                          
      75                 :  * ToolInfo Klasse für XPWeb 3.x .                                                                                                                                                                                                                                                          
      76                 :  * @package eStudy.ExternalTools                                                                                                                                                                                                                                                             
      77                 :  * @version 1.0, 13/10/05                                                                                                                                                                                                                                                                    
      78                 :  * @author Christian Gerhardt <case42@gmx.net>                                                                                                                                                                                                                                               
      79                 :  */                                                                                                                                                                                                                                                                                          
      80               1 : class XPWebInfo extends ToolInfo {                                                                                                                                                                                                                                                           
      81                 :     /**                                                                                                                                                                                                                                                                                      
      82                 :      * Array mit Ausgabestrings.                                                                                                                                                                                                                                                             
      83                 :      * @var array                                                                                                                                                                                                                                                                            
      84                 :      * @access private                                                                                                                                                                                                                                                                       
      85                 :      */                                                                                                                                                                                                                                                                                      
      86                 :     public $strings;                                                                                                                                                                                                                                                                         
      87                 :                                                                                                                                                                                                                                                                                              
      88                 :     /**                                                                                                                                                                                                                                                                                      
      89                 :      * Erzeugt ein neues XPWebInfo Objekt.                                                                                                                                                                                                                                                   
      90                 :      * @param integer $id - die Tool ID                                                                                                                                                                                                                                                      
      91                 :      * @param string $image - das Icon, das angezeigt werden soll.                                                                                                                                                                                                                           
      92                 :      */                                                                                                                                                                                                                                                                                      
      93                 :     public function XPWebInfo($id, $image = null) {                                                                                                                                                                                                                                          
      94               0 :         parent::ToolInfo($image);                                                                                                                                                                                                                                                            
      95               0 :         $this->toolName = "XPWeb 3.x";                                                                                                                                                                                                                                                       
      96               0 :         $this->toolID = $id;                                                                                                                                                                                                                                                                 
      97               0 :         $this->strings['label_create_projects'] = "Automatisch ein Projekt für den Kurs anlegen.";                                                                                                                                                                                          
      98               0 :         $this->strings['label_usergroup_students'] = "Automatische Benutzergruppe für Studenten";                                                                                                                                                                                           
      99               0 :         $this->strings['label_usergroup_teachers'] = "Automatische Benutzergruppe für Dozenten";                                                                                                                                                                                            
     100               0 :         $this->strings['label_usergroup_assistents'] = "Automatische Benutzergruppe für das Sekretariat";                                                                                                                                                                                   
     101               0 :         $this->strings['info_usergroups'] = "Geben Sie hier die XPWeb-Benutzergruppen an, die automatisch den "."eStudy-Benutzergruppen zugeordnet werden sollen. Wenn Sie die Felder offen lassen, oder nicht "."existente XPWeb-Benutzergruppen angeben, werden Standardwerte eingesetzt.";
     102               0 :         $this->strings['default_project_description'] = "Von eStudy automatisch generiertes Projekt des Kurses \"%s\"";                                                                                                                                                                      
     103               0 :     }                                                                                                                                                                                                                                                                                        
     104                 :     /**                                                                                                                                                                                                                                                                                      
     105                 :      * Prüft ob der aktuelle eStudy-Benutzer bereits in die                                                                                                                                                                                                                                 
     106                 :      * XPWeb Benutzertabelle aufgenommen worden ist.                                                                                                                                                                                                                                         
     107                 :      * @access public                                                                                                                                                                                                                                                                        
     108                 :      * @return bool <i>true</i>-Falls der Benutzer bereits eingetragen ist.                                                                                                                                                                                                                  
     109                 :      */                                                                                                                                                                                                                                                                                      
     110                 :     public function checkForUser() {                                                                                                                                                                                                                                                         
     111               0 :         $name = $this->createXPWebUserName();                                                                                                                                                                                                                                                
     112               0 :         $query = "SELECT COUNT(*) FROM %s WHERE name = '%s' LIMIT 1";                                                                                                                                                                                                                        
     113               0 :         $query = sprintf($query, XPWEB_MEMBERS_TABLE, Data::toMysql($name));                                                                                                                                                                                                                 
     114               0 :         $result = $this->toolDB->get_var($query);                                                                                                                                                                                                                                            
     115               0 :         if ($result > 0) {                                                                                                                                                                                                                                                                   
     116               0 :             return true;                                                                                                                                                                                                                                                                     
     117                 :         } else {                                                                                                                                                                                                                                                                             
     118               0 :             return false;                                                                                                                                                                                                                                                                    
     119                 :         }                                                                                                                                                                                                                                                                                    
     120                 :     }                                                                                                                                                                                                                                                                                        
     121                 :     /**                                                                                                                                                                                                                                                                                      
     122                 :      * Fügt den aktuellen e-Study-Benutzer in die XPWeb-Benutzertabelle ein.                                                                                                                                                                                                                
     123                 :      * @access public                                                                                                                                                                                                                                                                        
     124                 :      * @return void                                                                                                                                                                                                                                                                          
     125                 :      */                                                                                                                                                                                                                                                                                      
     126                 :     public function insertNewUser() {                                                                                                                                                                                                                                                        
     127               0 :         global $EZSQL_ERROR;                                                                                                                                                                                                                                                                 
     128               0 :         $name = $this->createXPWebUserName();                                                                                                                                                                                                                                                
     129               0 :         $query = "INSERT INTO %s ";                                                                                                                                                                                                                                                          
     130               0 :         $query.= "(`profile_id`, `name`, `description`) ";                                                                                                                                                                                                                                   
     131               0 :         $query.= "VALUES ('%s','%s','%s' )";                                                                                                                                                                                                                                                 
     132               0 :         $query = sprintf($query, XPWEB_MEMBERS_TABLE, $this->getXPWebDefaultProvile($this->userData['Usergroup']), Data::toMysql($name), XPWEB_DEFAULT_DESCRIPTION);                                                                                                                         
     133               0 :         if ($this->toolDB->query($query)) {                                                                                                                                                                                                                                                  
     134               0 :             $xpweb_username = $this->toolDB->insert_id;                                                                                                                                                                                                                                      
     135               0 :             $query = "INSERT INTO %s ";                                                                                                                                                                                                                                                      
     136               0 :             $query.= "(`username`, `password`, `email`, `question`, `answer`) ";                                                                                                                                                                                                             
     137               0 :             $query.= "VALUES ('%s','%s','%s','','')";                                                                                                                                                                                                                                        
     138               0 :             $query = sprintf($query, XPWEB_USERS_TABLE, $xpweb_username, Passwords::GenerateHash($this->userLogonData['password'], "", HASH_XPWEB), Data::toMysql($this->userData['Email']));                                                                                                
     139               0 :             return (bool)$this->toolDB->query($query);                                                                                                                                                                                                                                       
     140                 :         }                                                                                                                                                                                                                                                                                    
     141               0 :         return false;                                                                                                                                                                                                                                                                        
     142                 :     }                                                                                                                                                                                                                                                                                        
     143                 :     /**                                                                                                                                                                                                                                                                                      
     144                 :      * Gibt das einer eStudy-Benutzergruppe zugeordnete XPWeb-Profil zurück.                                                                                                                                                                                                                
     145                 :      * Die Zuordnung kann über die ToolOptionen                                                                                                                                                                                                                                             
     146                 :      * <code>                                                                                                                                                                                                                                                                                
     147                 :      * usergroup_teachers, usergroup_student, usergroup_assistents                                                                                                                                                                                                                           
     148                 :      * </code>                                                                                                                                                                                                                                                                               
     149                 :      * festgelegt werden, indem der Name des XPWeb-Profil angegeben wird.<br />                                                                                                                                                                                                              
     150                 :      * Sollte kein Profil angegeben worden sein, werden die Standardprofile                                                                                                                                                                                                                  
     151                 :      * verwendet.<br />                                                                                                                                                                                                                                                                      
     152                 :      * eStudy-Admins erhalten das gleiche Profil wie ein Dozent.                                                                                                                                                                                                                             
     153                 :      *                                                                                                                                                                                                                                                                                       
     154                 :      * @access public                                                                                                                                                                                                                                                                        
     155                 :      * @param integer $usergroup - die Benutergruppe                                                                                                                                                                                                                                         
     156                 :      * @return integer - das XPWeb-Profil                                                                                                                                                                                                                                                    
     157                 :      */                                                                                                                                                                                                                                                                                      
     158                 :     public function getXPWebDefaultProvile($usergroup) {                                                                                                                                                                                                                                     
     159               0 :         $query = "SELECT id FROM ".XPWEB_PROFILE_TABLE." WHERE name='%s' LIMIT 1";                                                                                                                                                                                                           
     160                 :         switch ($usergroup) {                                                                                                                                                                                                                                                                
     161               0 :             case ADMIN:                                                                                                                                                                                                                                                                      
     162               0 :             case DOZENT:                                                                                                                                                                                                                                                                     
     163               0 :                 if (isset($this->toolOptions['usergroup_teachers']) && $this->toolOptions['usergroup_teachers']) {                                                                                                                                                                           
     164               0 :                     $id = $this->toolDB->get_var(sprintf($query, $this->toolOptions['usergroup_teachers']));                                                                                                                                                                                 
     165               0 :                     if ($id) {                                                                                                                                                                                                                                                               
     166               0 :                         return $id;                                                                                                                                                                                                                                                          
     167                 :                     }                                                                                                                                                                                                                                                                        
     168               0 :                 }                                                                                                                                                                                                                                                                            
     169               0 :                 return XPWEB_ADMINISTRATOR_PROFILE;                                                                                                                                                                                                                                          
     170               0 :             case STUDENT:                                                                                                                                                                                                                                                                    
     171               0 :             case ALUMNUS:                                                                                                                                                                                                                                                                    
     172               0 :             case SCHUELER:                                                                                                                                                                                                                                                                   
     173               0 :             case GAST:                                                                                                                                                                                                                                                                       
     174               0 :                 if (isset($this->toolOptions['usergroup_student']) && $this->toolOptions['usergroup_student']) {                                                                                                                                                                             
     175               0 :                     $id = $this->toolDB->get_var(sprintf($query, $this->toolOptions['usergroup_teachers']));                                                                                                                                                                                 
     176               0 :                     if ($id) {                                                                                                                                                                                                                                                               
     177               0 :                         return $id;                                                                                                                                                                                                                                                          
     178                 :                     }                                                                                                                                                                                                                                                                        
     179               0 :                 }                                                                                                                                                                                                                                                                            
     180               0 :                 return XPWEB_DEFAULT_PROFILE;                                                                                                                                                                                                                                                
     181               0 :             case SEKRETARIAT:                                                                                                                                                                                                                                                                
     182               0 :                 if (isset($this->toolOptions['usergroup_assistents']) && $this->toolOptions['usergroup_assistents']) {                                                                                                                                                                       
     183               0 :                     $id = $this->toolDB->get_var(sprintf($query, $this->toolOptions['usergroup_teachers']));                                                                                                                                                                                 
     184               0 :                     if ($id) {                                                                                                                                                                                                                                                               
     185               0 :                         return $id;                                                                                                                                                                                                                                                          
     186                 :                     }                                                                                                                                                                                                                                                                        
     187               0 :                 }                                                                                                                                                                                                                                                                            
     188               0 :                 return XPWEB_DEFAULT_PROFILE;                                                                                                                                                                                                                                                
     189               0 :             default:                                                                                                                                                                                                                                                                         
     190               0 :                 return XPWEB_DEFAULT_PROFILE;                                                                                                                                                                                                                                                
     191               0 :         }                                                                                                                                                                                                                                                                                    
     192                 :     }                                                                                                                                                                                                                                                                                        
     193                 :     /**                                                                                                                                                                                                                                                                                      
     194                 :      * Aktualisiert die XPweb-Benutzertabelle, nachdem der                                                                                                                                                                                                                                   
     195                 :      * eStudy-Benutzer innerhalb von eStudy seine Logindaten geändert hat.                                                                                                                                                                                                                  
     196                 :      * @access public                                                                                                                                                                                                                                                                        
     197                 :      * @param String $oldLogin - Der alte Loginname des Benutzers.                                                                                                                                                                                                                           
     198                 :      * @param String $newLogin - Der neue Loginname des Benutzers.                                                                                                                                                                                                                           
     199                 :      * @param String $password - Das Passwort des Benutzers.                                                                                                                                                                                                                                 
     200                 :      * @return bool - <i>true</i> wenn alles geklappt hat.                                                                                                                                                                                                                                   
     201                 :      */                                                                                                                                                                                                                                                                                      
     202                 :     public function updateLogin($oldLogin, $newLogin, $password) {                                                                                                                                                                                                                           
     203               0 :         global $EZSQL_ERROR;                                                                                                                                                                                                                                                                 
     204               0 :         if ($this->checkForUser()) {                                                                                                                                                                                                                                                         
     205               0 :             $name = $this->createXPWebUserName();                                                                                                                                                                                                                                            
     206               0 :             $query = "SELECT id FROM %s WHERE name='%s'";                                                                                                                                                                                                                                    
     207               0 :             $query = sprintf($query, XPWEB_MEMBERS_TABLE, Data::toMysql($name));                                                                                                                                                                                                             
     208               0 :             $xpweb_username = $this->toolDB->get_var($query);                                                                                                                                                                                                                                
     209               0 :             if ($EZSQL_ERROR) return false;                                                                                                                                                                                                                                                  
     210               0 :             $query = "UPDATE %s SET password='%s' WHERE username='%s'";                                                                                                                                                                                                                      
     211               0 :             $query = sprintf($query, XPWEB_USERS_TABLE, Passwords::GenerateHash($password, "", HASH_XPWEB), Data::toMysql($xpweb_username));                                                                                                                                                 
     212               0 :             $this->toolDB->query($query);                                                                                                                                                                                                                                                    
     213               0 :             if ($EZSQL_ERROR) return false;                                                                                                                                                                                                                                                  
     214               0 :         } else {                                                                                                                                                                                                                                                                             
     215               0 :             $this->insertNewUser();                                                                                                                                                                                                                                                          
     216                 :         }                                                                                                                                                                                                                                                                                    
     217               0 :         return true;                                                                                                                                                                                                                                                                         
     218                 :     }                                                                                                                                                                                                                                                                                        
     219                 :     /**                                                                                                                                                                                                                                                                                      
     220                 :      *                                                                                                                                                                                                                                                                                       
     221                 :      * @access public                                                                                                                                                                                                                                                                        
     222                 :      * @param array $hiddenVars                                                                                                                                                                                                                                                              
     223                 :      * @return                                                                                                                                                                                                                                                                               
     224                 :      */                                                                                                                                                                                                                                                                                      
     225                 :     public function showOptionsDialog($hiddenVars) {                                                                                                                                                                                                                                         
     226               0 :         $result = $this->checkPostVars();                                                                                                                                                                                                                                                    
     227               0 :         if ($result === false) {                                                                                                                                                                                                                                                             
     228               0 :             $this->echoDialog($hiddenVars);                                                                                                                                                                                                                                                  
     229               0 :         }                                                                                                                                                                                                                                                                                    
     230               0 :         return $result;                                                                                                                                                                                                                                                                      
     231                 :     }                                                                                                                                                                                                                                                                                        
     232                 :     /**                                                                                                                                                                                                                                                                                      
     233                 :      * Handelt spezielle Events ab, auf die mit den ToolOptionen reagiert werden kann.                                                                                                                                                                                                       
     234                 :      * <p>                                                                                                                                                                                                                                                                                   
     235                 :      * Auf <code>OPTIONS_EVENT_SHOW_PAGE</code> wird reagiert                                                                                                                                                                                                                                
     236                 :      * in dem ein neues Projekt mit dem Kursnamen angelegt wird,                                                                                                                                                                                                                             
     237                 :      * und der aktuelle Benutzer in dieses Projekt eingetragen wird.                                                                                                                                                                                                                         
     238                 :      * </p>                                                                                                                                                                                                                                                                                  
     239                 :      * @access public                                                                                                                                                                                                                                                                        
     240                 :      * @param integer $event - der Event der behandelt werden muss.                                                                                                                                                                                                                          
     241                 :      * @return void                                                                                                                                                                                                                                                                          
     242                 :      */                                                                                                                                                                                                                                                                                      
     243                 :     public function optionsHandler($event) {                                                                                                                                                                                                                                                 
     244               0 :         global $db, $settings;                                                                                                                                                                                                                                                               
     245                 :         switch ($event) {                                                                                                                                                                                                                                                                    
     246               0 :             case OPTIONS_EVENT_SHOW_PAGE:                                                                                                                                                                                                                                                    
     247               0 :                 $query = "SELECT Name FROM %scourses WHERE ID='%s'";                                                                                                                                                                                                                         
     248               0 :                 $query = sprintf($query, $settings['dbPrefix'], $_SESSION['course']);                                                                                                                                                                                                        
     249               0 :                 $courseName = $db->get_var($query);                                                                                                                                                                                                                                          
     250               0 :                 if ((bool)$courseName) {                                                                                                                                                                                                                                                     
     251               0 :                     $projectID = $this->createProject($courseName);                                                                                                                                                                                                                          
     252               0 :                     $this->assignToProject($projectID);                                                                                                                                                                                                                                      
     253               0 :                 }                                                                                                                                                                                                                                                                            
     254               0 :                 break;                                                                                                                                                                                                                                                                       
     255                 :         }                                                                                                                                                                                                                                                                                    
     256               0 :     }                                                                                                                                                                                                                                                                                        
     257                 :     /**                                                                                                                                                                                                                                                                                      
     258                 :      *                                                                                                                                                                                                                                                                                       
     259                 :      * @access private                                                                                                                                                                                                                                                                       
     260                 :      * @return mixed                                                                                                                                                                                                                                                                         
     261                 :      */                                                                                                                                                                                                                                                                                      
     262                 :     public function checkPostVars() {                                                                                                                                                                                                                                                        
     263               0 :         if (isset($_POST['optionsDialog'])) {                                                                                                                                                                                                                                                
     264               0 :             if (isset($_POST['okButton'])) {                                                                                                                                                                                                                                                 
     265               0 :                 $result = array();                                                                                                                                                                                                                                                           
     266               0 :                 if (isset($_POST['create_projects'])) {                                                                                                                                                                                                                                      
     267               0 :                     $result['create_projects'] = true;                                                                                                                                                                                                                                       
     268               0 :                 } else {                                                                                                                                                                                                                                                                     
     269               0 :                     $result['create_projects'] = false;                                                                                                                                                                                                                                      
     270                 :                 }                                                                                                                                                                                                                                                                            
     271               0 :                 if (isset($_POST['usergroup_students'])) {                                                                                                                                                                                                                                   
     272               0 :                     $result['usergroup_students'] = $_POST['usergroup_students'];                                                                                                                                                                                                            
     273               0 :                 }                                                                                                                                                                                                                                                                            
     274               0 :                 if (isset($_POST['usergroup_teachers'])) {                                                                                                                                                                                                                                   
     275               0 :                     $result['usergroup_teachers'] = $_POST['usergroup_teachers'];                                                                                                                                                                                                            
     276               0 :                 }                                                                                                                                                                                                                                                                            
     277               0 :                 if (isset($_POST['usergroup_assistents'])) {                                                                                                                                                                                                                                 
     278               0 :                     $result['usergroup_assistents'] = $_POST['usergroup_assistents'];                                                                                                                                                                                                        
     279               0 :                 }                                                                                                                                                                                                                                                                            
     280               0 :                 return $result;                                                                                                                                                                                                                                                              
     281                 :             }                                                                                                                                                                                                                                                                                
     282               0 :             return true;                                                                                                                                                                                                                                                                     
     283                 :         }                                                                                                                                                                                                                                                                                    
     284               0 :         return false;                                                                                                                                                                                                                                                                        
     285                 :     }                                                                                                                                                                                                                                                                                        
     286                 :     /**                                                                                                                                                                                                                                                                                      
     287                 :      *                                                                                                                                                                                                                                                                                       
     288                 :      * @access private                                                                                                                                                                                                                                                                       
     289                 :      * @param array $hiddenVarsm                                                                                                                                                                                                                                                             
     290                 :      * @return                                                                                                                                                                                                                                                                               
     291                 :      */                                                                                                                                                                                                                                                                                      
     292                 :     public function echoDialog($hiddenVars) {                                                                                                                                                                                                                                                
     293               0 :         $inputString = "<p class='pForm'><input type='%s' name='%s' value='%s' %s /></p>\n";                                                                                                                                                                                                 
     294               0 :         printf("<form method='post' action='%s'>\n", PATH_TO_ROOT.SCRIPT_NAME);                                                                                                                                                                                                              
     295               0 :         echo "<table class='tableBorder'>\n";                                                                                                                                                                                                                                                
     296               0 :         Output::echoTableHead("Spezielle Einstellungen von ".$this->toolName, 2);                                                                                                                                                                                                            
     297               0 :         echo "<tr><td colspan='2'>\n";                                                                                                                                                                                                                                                       
     298               0 :         printf($inputString, "hidden", "optionsDialog", "true", "");                                                                                                                                                                                                                         
     299               0 :         foreach($hiddenVars as $key => $value) {                                                                                                                                                                                                                                             
     300               0 :             printf($inputString, "hidden", $key, $value, "");                                                                                                                                                                                                                                
     301               0 :         }                                                                                                                                                                                                                                                                                    
     302               0 :         echo $this->strings['label_create_projects'];                                                                                                                                                                                                                                        
     303               0 :         if (isset($this->toolOptions['create_projects']) && $this->toolOptions['create_projects'] == true) {                                                                                                                                                                                 
     304               0 :             printf($inputString, "checkbox", 'create_projects', 'true', "checked='checked'");                                                                                                                                                                                                
     305               0 :         } else {                                                                                                                                                                                                                                                                             
     306               0 :             printf($inputString, "checkbox", 'create_projects', 'false', "");                                                                                                                                                                                                                
     307                 :         }                                                                                                                                                                                                                                                                                    
     308               0 :         echo "</td></tr>\n";                                                                                                                                                                                                                                                                 
     309               0 :         echo "<tr><td colspan='2'>\n";                                                                                                                                                                                                                                                       
     310               0 :         echo "<hr />\n";                                                                                                                                                                                                                                                                     
     311               0 :         echo "</td></tr>\n";                                                                                                                                                                                                                                                                 
     312               0 :         echo "<tr><td colspan='2'>\n";                                                                                                                                                                                                                                                       
     313               0 :         echo $this->strings['info_usergroups'];                                                                                                                                                                                                                                              
     314               0 :         echo "</td></tr>\n";                                                                                                                                                                                                                                                                 
     315               0 :         echo "<tr><td>\n";                                                                                                                                                                                                                                                                   
     316               0 :         echo $this->strings['label_usergroup_students'];                                                                                                                                                                                                                                     
     317               0 :         echo "</td><td width='50%'>\n";                                                                                                                                                                                                                                                      
     318               0 :         printf($inputString, "text", 'usergroup_students', isset($this->toolOptions['usergroup_students']) ? $this->toolOptions['usergroup_students'] : '', "style='width:99%;'");                                                                                                           
     319               0 :         echo "</td></tr>\n";                                                                                                                                                                                                                                                                 
     320               0 :         echo "<tr><td>\n";                                                                                                                                                                                                                                                                   
     321               0 :         echo $this->strings['label_usergroup_teachers'];                                                                                                                                                                                                                                     
     322               0 :         echo "</td><td width='50%'>\n";                                                                                                                                                                                                                                                      
     323               0 :         printf($inputString, "text", 'usergroup_teachers', isset($this->toolOptions['usergroup_teachers']) ? $this->toolOptions['usergroup_teachers'] : '', "style='width:99%;'");                                                                                                           
     324               0 :         echo "</td></tr>\n";                                                                                                                                                                                                                                                                 
     325               0 :         echo "<tr><td>\n";                                                                                                                                                                                                                                                                   
     326               0 :         echo $this->strings['label_usergroup_assistents'];                                                                                                                                                                                                                                   
     327               0 :         echo "</td><td width='50%'>\n";                                                                                                                                                                                                                                                      
     328               0 :         printf($inputString, "text", 'usergroup_assistents', isset($this->toolOptions['usergroup_assistents']) ? $this->toolOptions['usergroup_assistents'] : '', "style='width:99%;'");                                                                                                     
     329               0 :         echo "</td></tr>\n";                                                                                                                                                                                                                                                                 
     330               0 :         Output::echoDialogBottom(null, 2);                                                                                                                                                                                                                                                   
     331               0 :         echo "</table>\n";                                                                                                                                                                                                                                                                   
     332               0 :         echo "</form>\n";                                                                                                                                                                                                                                                                    
     333               0 :     }                                                                                                                                                                                                                                                                                        
     334                 :     /**                                                                                                                                                                                                                                                                                      
     335                 :      * Erzeugt ein XPWeb-Projekt.                                                                                                                                                                                                                                                            
     336                 :      * Falls ein Projekt mit dem übergebenen Namen bereits exisitiert,                                                                                                                                                                                                                      
     337                 :      * wird nur ID dieses Projekts zurückgegeben.                                                                                                                                                                                                                                           
     338                 :      *                                                                                                                                                                                                                                                                                       
     339                 :      * @access public                                                                                                                                                                                                                                                                        
     340                 :      * @param String $projectName                                                                                                                                                                                                                                                            
     341                 :      * @return integer - die ID des neu erzeugten Projekts.                                                                                                                                                                                                                                  
     342                 :      */                                                                                                                                                                                                                                                                                      
     343                 :     public function createProject($projectName) {                                                                                                                                                                                                                                            
     344               0 :         $query = "SELECT id FROM %s WHERE name='%s'";                                                                                                                                                                                                                                        
     345               0 :         $query = sprintf($query, XPWEB_PROJECTS_TABLE, Data::toMysql($projectName));                                                                                                                                                                                                         
     346               0 :         $projectID = $this->toolDB->get_var($query);                                                                                                                                                                                                                                         
     347               0 :         if (!$projectID) {                                                                                                                                                                                                                                                                   
     348               0 :             $query = "INSERT INTO %s (name, description) VALUES('%s', '%s')";                                                                                                                                                                                                                
     349               0 :             $query = sprintf($query, XPWEB_PROJECTS_TABLE, Data::toMysql($projectName), sprintf($this->strings['default_project_description'], Data::toMysql($projectName)));                                                                                                                
     350               0 :             $this->toolDB->query($query);                                                                                                                                                                                                                                                    
     351               0 :             $projectID = $this->toolDB->insert_id;                                                                                                                                                                                                                                           
     352               0 :         }                                                                                                                                                                                                                                                                                    
     353               0 :         return $projectID;                                                                                                                                                                                                                                                                   
     354                 :     }                                                                                                                                                                                                                                                                                        
     355                 :     /**                                                                                                                                                                                                                                                                                      
     356                 :      * Füg den aktuellen eStudy-Benutzer einem XPWeb-Projekt hinzu,                                                                                                                                                                                                                         
     357                 :      * falls dieser noch nicht Mitglied ist.                                                                                                                                                                                                                                                 
     358                 :      * @access public                                                                                                                                                                                                                                                                        
     359                 :      * @param integer $projectID - die ID des XPWeb-Projekts.                                                                                                                                                                                                                                
     360                 :      * @return void                                                                                                                                                                                                                                                                          
     361                 :      */                                                                                                                                                                                                                                                                                      
     362                 :     public function assignToProject($projectID) {                                                                                                                                                                                                                                            
     363               0 :         $name = $this->createXPWebUserName();                                                                                                                                                                                                                                                
     364               0 :         $query = "SELECT id FROM %s WHERE name='%s'";                                                                                                                                                                                                                                        
     365               0 :         $query = sprintf($query, XPWEB_MEMBERS_TABLE, $name);                                                                                                                                                                                                                                
     366               0 :         $xpwebID = $this->toolDB->get_var($query);                                                                                                                                                                                                                                           
     367               0 :         $query = "SELECT * FROM %s WHERE project_id='%s' AND team_member_id='%s'";                                                                                                                                                                                                           
     368               0 :         $query = sprintf($query, XPWEB_PROJECTS_AFFECTATION_TABLE, (int)$projectID, (int)$xpwebID);                                                                                                                                                                                          
     369               0 :         $project_data = $this->toolDB->get_row($query);                                                                                                                                                                                                                                      
     370               0 :         if (!$project_data) {                                                                                                                                                                                                                                                                
     371               0 :             $query = "INSERT INTO %s SET project_id='%s', team_member_id='%s'";                                                                                                                                                                                                              
     372               0 :             $query = sprintf($query, XPWEB_PROJECTS_AFFECTATION_TABLE, (int)$projectID, (int)$xpwebID);                                                                                                                                                                                      
     373               0 :             $this->toolDB->query($query);                                                                                                                                                                                                                                                    
     374               0 :         }                                                                                                                                                                                                                                                                                    
     375               0 :     }                                                                                                                                                                                                                                                                                        
     376                 :     /**                                                                                                                                                                                                                                                                                      
     377                 :      * Erzeugt einen XPWeb-Benutzernamen.                                                                                                                                                                                                                                                    
     378                 :      * Der Benutzername besteht aus dem Vornamen und Nachnamen                                                                                                                                                                                                                               
     379                 :      * des eStudy-Benutzers verbunden mit einem Loginnamen, um                                                                                                                                                                                                                               
     380                 :      * die Eindeutigkeit sicherzustellen.                                                                                                                                                                                                                                                    
     381                 :      *                                                                                                                                                                                                                                                                                       
     382                 :      * @access public                                                                                                                                                                                                                                                                        
     383                 :      * @return String der generierte XPWeb-Benutzername.                                                                                                                                                                                                                                     
     384                 :      */                                                                                                                                                                                                                                                                                      
     385                 :     public function createXPWebUsername() {                                                                                                                                                                                                                                                  
     386               0 :         return sprintf("%s %s (%s)", $this->userData['Vorname'], $this->userData['Nachname'], $this->userData['ShortName'] // um den benutzernamen eindeutig zu machen                                                                                                                       
     387               0 :         );                                                                                                                                                                                                                                                                                   
     388                 :     }                                                                                                                                                                                                                                                                                        
     389                 : }                                                                                                                                                                                                                                                                                            

Generated by PHPUnit 3.2.21 and Xdebug 2.0.4 at Sat Nov 7 22:04:08 CET 2009.